// 实现 Math.pow()
// 使用二分法
function power(a, n) {
  if (n < 0) {
    if (a === 0) return Infinity
    return 1 / power(a, -n)
  }
  if (n === 0) return 1

  let r = power(a, n / 2)

  // return n % 2 === 1 ? r * r * a : r * r
  return n & 1 ? r * r * a : r * r
}

function power(a, n) {
  if (n === 0) return 1
  let res = 1
  let tmp = a
  while (n) {
    if (n & 1) {
      res *= tmp
    }
    n >>= 1
    tmp *= tmp
  }
  // for (let i = 0; i < n; i <<= 1) {}

  return res
}
